<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>Document</title>
</head>
<body>
    <script>
        function myNew(){
            //创建一个空对象
            let obj = {};
            //获取构造函数
            let Constructor = [].shift.call(arguments); //shift删除索引为0的值
            //链接到原型
            obj.__proto__ = Constructor.prototype;
            //绑定this值
            let result = Constructor.apply(obj,arguments);//使用apply，将构造函数中的this指向新对象，这样新对象就可以访问构造函数中的属性和方法
            //返回新对象
            return typeof result === 'object' ? result : obj;//如果返回值是一个对象，否则返回构造函数的一个实例对象
        }
    </script>
</body>
</html>